home *** CD-ROM | disk | FTP | other *** search
-
-
- Small Math Libraries
- v. 1.2
- Public domain software by Laz Marhenke
-
-
- I. Legal stuff:
- These libraries are public domain. Do as you will with them (except, of
- course, copyright them).
-
- II. The Software:
- The enclosed libraries (mathieeesingtrans.library,
- mathieeedoubbas.library, and mathieeedoubtrans.library) are replacements
- for the IEEE math libraries that come with the Amiga for users who have a
- math coprocessor (68881, 68882, or 68040) installed in their system. They
- should be "plug-compatible"; i.e., just copy them into your LIBS: drawer
- and go. Unlike the originals, however, these libraries will *not* work if
- you don't have a math coprocessor -- they will, in fact, certainly crash
- your machine. The advantage to using these libraries over the
- Commodore-supplied ones is that these are 60-90% smaller. The space savings
- was realized by not including any code in the libraries for use when a
- coprocessor is not available. Note that these libraries are no faster than
- the Commodore libraries (which already make use of a coprocessor when one
- is available), just smaller (but see below).
- To install the libraries, execute the included script "Install_Libs"
- (using "execute" from a shell window or by double-clicking on the icon from
- the Workbench). The script will copy the small math libraries into your
- LIBS: drawer, overwriting the old versions. For this reason, make sure you
- are working with a copy of your Workbench disk. Alternately, you can just
- copy them manually by whatever method you like.
-
- III. Bugs (Features?):
- This version (1.2) is intended to correct a rather embarrassing bug that
- got through in the version 1.1a Cmp() function in the
- mathieeedoubbas.library. The effect of the bug was that the compare gave
- the wrong result for two unequal negative arguments. Thanks to
- Rainer Koehler for finding the bug and sending me an annotated bit of C
- code which nicely patched the hole in my own testing. I also squeezed a few
- microseconds out of the Tst() function, and cleaned up the source a little.
- The other two libraries (the transcendental libraries) are essentially
- identical to those distributed as version 1.1a, but have been relinked
- using the SAS 6.0 release, which makes them a few bytes smaller.
- Keep in mind that to actually begin using the libraries you may have to
- reboot your system after installing them, since other programs (AREXX in
- particular) may have already opened some of them, and the computer won't
- reload the library from disk if it's already in memory.
- The only other thing to be concerned about is a possible incompatibility
- in the Pow() function. The Pow() function in the Commodore-supplied
- transcendental libraries did not behave well (to my mind) when given
- unusual input. By "unusual", I mean things like negative numbers to
- infinite powers, or positive infinity to the zero power, etc. The most
- common response of the routine was to return zero -- in many of these cases
- the wrong answer. However, in at least one case (I think it was raising a
- negative number to the negative infinity power, but I no longer remember),
- the Commodore-supplied routine simply crashed. I decided that this was
- unacceptable, and so did not reproduce this behavior in my libraries. The
- Pow() function I wrote tries its best to return a reasonable number given
- unreasonable inputs (a positive number to the negative infinity power
- should be zero, for example). When no reasonable answer is possible (e.g.,
- -4^0.5), it returns NaN (not-a-number). Somehow, in doing this, I managed
- to write a Pow() routine which is about twice as fast as the one in the
- original libraries. Naturally this made me suspicious that I had missed
- something, but I've tested the function with every combination of inputs
- that I can come up with and it works fine.
- I have taken the liberty of making these libraries versions 37.2, and
- 37.3, since as far as I can tell, they contain all the functions that the
- v.37 libraries do.
- With any other bugs or problems, you can contact me via e-mail at
- laz@leland.stanford.edu . (My physical address varies slightly more rapidly
- than my e-mail address.)
-
-
-
-